package srcTest;

import static org.junit.Assert.*;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.ejb.embeddable.EJBContainer;
import javax.naming.NamingException;

import junit.framework.Assert;


import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;

import com.sumset.daos.ComunidadDao;
import com.sumset.entidades.Comunidad;

/**clase que prueba los metodos de la clase comunidadDao
 * @author leyson FCP
 *
 */
public class ComunidadTest {

	private static EJBContainer contenedor;
	private static ComunidadDao cd;
	
	/**metodo que crea instancia los atributos de la clase y crea una comunidad
	 * @throws NamingException
	 */
	@BeforeClass
	public static void primerMetodo() throws NamingException {
		Map<String, String> properties=new HashMap<String, String>();
		properties.put(EJBContainer.APP_NAME, "pratica_26");
		contenedor=EJBContainer.createEJBContainer(properties);
		cd=(ComunidadDao) contenedor.getContext().lookup("java:global/pratica_26/ComunidadDao");
		
		
		Comunidad c=new Comunidad();
		c.setId(1);
		c.setNombre("tales");
		
		cd.insert(c);
	}
	
	/**metodo que prueba el insertar de la clase comunidadDao
	 * @throws Exception
	 */
	@Test
	public void testInsert() throws Exception {
		Comunidad c=new Comunidad();
		c.setId(2);
		c.setNombre("retales");
		
		cd.insert(c);
		
		c=cd.buscar(2);
		
		assertEquals(2, c.getId().intValue());
		
	}
	/**metodo que prueba el actualizar de la clase comunidadDao
	 * @throws Exception
	 */
	@Test
	public void testUpdate() throws Exception {
		Comunidad c=cd.buscar(1);
		c.setNombre("retales editado");
		
		cd.update(c);
		
		c=cd.buscar(1);
		
		Assert.assertEquals("retales editado", c.getNombre());
	}
	/**metodo que prueba el eliminar de la clase comunidadDao
	 * @throws Exception
	 */
	@Test
	public void testDelete() throws Exception {
		Comunidad c=cd.buscar(2);
		cd.delete(c);
		
		c=cd.buscar(2);
		
		Assert.assertEquals(null, c);
	}
	/**metodo que prueba el buscar de la clase comunidadDao
	 * @throws Exception
	 */
	@Test
	public void testBuscar() throws Exception {
		Comunidad c=cd.buscar(1);
		Assert.assertEquals(1, c.getId().intValue());		
			
	}
	/**metodo que prueba el listar de la clase comunidadDao
	 * @throws Exception
	 */
	@Test
	public void testListar() throws Exception {
		List<Comunidad > cs=cd.listar();
		Comunidad c=cd.buscar(1);
		
		Assert.assertTrue(cs.contains(c));
	}
	/**
	 * metodo que elimina los rastros de la prueba
	 * @throws Exception
	 */
	@AfterClass
	public static void ultimoMetodo() throws Exception {
		Comunidad c=cd.buscar(1);
		cd.delete(c);
	}

}
